package 水果成篮904;

import java.util.HashMap;

public class Solution {
    public int totalFruit(int[] fruits) {
        HashMap<Integer, Integer> map = new HashMap<>();
        int left = 0;
        int right = 0;
        int max = 0;
        while (right < fruits.length) {
            map.put(fruits[right], map.getOrDefault(fruits[right], 0) + 1);
            if(map.size() <= 2) {
                max = Math.max(max, right - left + 1);
                right++;
            }else {
                map.put(fruits[left], map.getOrDefault(fruits[left], 0) - 1);
                if(map.get(fruits[left]) == 0) {
                    map.remove(fruits[left]);
                }
                map.put(fruits[right], map.getOrDefault(fruits[right], 0) - 1);
                left++;
            }
        }
        while (left < fruits.length) {
            if(map.size() <= 2) {
                max = Math.max(max, right - left);
                break;
            }else {
                map.put(fruits[left], map.getOrDefault(fruits[left], 0) - 1);
                if(map.get(fruits[left]) == 0) {
                    map.remove(fruits[left]);
                }
                left++;
            }
        }
        return max;
    }
}
